package com.xbongbong.saas.service;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.index.pojo.dto.IndexBoardChartGetConfigDTO;
import com.xbongbong.pro.index.pojo.dto.IndexBoardChartSaveConfigDTO;
import com.xbongbong.pro.index.pojo.dto.IndexBoardGetConfigDTO;
import com.xbongbong.pro.index.pojo.dto.IndexBoardHideDTO;
import com.xbongbong.pro.index.pojo.dto.IndexBoardInitDTO;
import com.xbongbong.pro.index.pojo.dto.IndexBoardSaveConfigAppDTO;
import com.xbongbong.pro.index.pojo.dto.IndexBoardSaveConfigDTO;
import com.xbongbong.pro.index.pojo.dto.IndexBoardSaveConfigWebDTO;
import com.xbongbong.pro.index.pojo.dto.IndexSaveFilterDTO;
import com.xbongbong.pro.index.pojo.vo.IndexBoardChartGetConfigVO;
import com.xbongbong.pro.index.pojo.vo.IndexBoardChartSaveConfigVO;
import com.xbongbong.pro.index.pojo.vo.IndexBoardGetConfigAppVO;
import com.xbongbong.pro.index.pojo.vo.IndexBoardGetConfigVO;
import com.xbongbong.pro.index.pojo.vo.IndexBoardGetConfigWebVO;
import com.xbongbong.pro.index.pojo.vo.IndexBoardHideVO;
import com.xbongbong.pro.index.pojo.vo.IndexBoardInitAppVO;
import com.xbongbong.pro.index.pojo.vo.IndexBoardInitVO;
import com.xbongbong.pro.index.pojo.vo.IndexBoardInitWebVO;
import com.xbongbong.pro.index.pojo.vo.IndexBoardSaveConfigVO;
import com.xbongbong.pro.index.pojo.vo.IndexSaveFilterVO;

import java.util.List;

/**
 * @description: 首页看板
 * @Author: hongxiao
 * @date: 2019-02-26 22:03
 * @since v1.0
 */
public interface IndexService {
    /**
     * web-首页看板初始化
     * @param boardInitDTO 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-02-26 22:08
     * @since v1.0
     * @version v1.0
     */
    IndexBoardInitVO boardInitWeb(IndexBoardInitDTO boardInitDTO) throws XbbException;

    /**
     * app-首页看板初始化
     * @param boardInitDTO 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-02-27 19:31
     * @since v1.0
     * @version v1.0
     */
    IndexBoardInitVO boardInitApp(IndexBoardInitDTO boardInitDTO) throws XbbException;

    /**
     * web-首页获取看板配置
     * @param getConfigDTO 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-02-26 22:17
     * @since v1.0
     * @version v1.0
     */
    IndexBoardGetConfigVO getConfigWeb(IndexBoardGetConfigDTO getConfigDTO) throws XbbException;

    /**
     * app-首页获取看板配置
     * @param getConfigDTO 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-02-27 19:38
     * @since v1.0
     * @version v1.0
     */
    IndexBoardGetConfigVO getConfigApp(IndexBoardGetConfigDTO getConfigDTO) throws XbbException;

    /**
     * web-保存首页看板配置
     * @param saveConfigWebDTO 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-02-27 09:58
     * @since v1.0
     * @version v1.0
     */
    IndexBoardSaveConfigVO saveConfigWeb(IndexBoardSaveConfigDTO saveConfigWebDTO) throws XbbException;

    /**
     * app-保存首页看板配置
     * @param saveConfigAppDTO 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-02-27 19:43
     * @since
     * @version
     */
    IndexBoardSaveConfigVO saveConfigApp(IndexBoardSaveConfigDTO saveConfigAppDTO) throws XbbException;

    /**
     * 获取首页看板下指标配置
     * @param chartGetConfigDTO 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-02-27 10:01
     * @since v1.0
     * @version v1.0
     */
    IndexBoardChartGetConfigVO chartGetConfig(IndexBoardChartGetConfigDTO chartGetConfigDTO) throws XbbException;

    /**
     * 保存首页看板下指标配置
     * @param chartSaveConfigDTO 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-02-27 10:02
     * @since v1.0
     * @version v1.0
     */
    IndexBoardChartSaveConfigVO chartSaveConfig(IndexBoardChartSaveConfigDTO chartSaveConfigDTO) throws XbbException;

    /**
     * 隐藏首页看板
     * @param boardHideDTO 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-02-27 10:02
     * @since v1.0
     * @version v1.0
     */
    IndexBoardHideVO boardHide(IndexBoardHideDTO boardHideDTO) throws XbbException;

    /**
     * 保存首页看板筛选项
     * @param saveFilterDTO 入参
     * @return
     * @throws
     *
     * @author hongxiao
     * @date: 2019-02-27 10:02
     * @since v1.0
     * @version v1.0
     */
    IndexSaveFilterVO saveFilter(IndexSaveFilterDTO saveFilterDTO) throws XbbException;

    /**
     * 获取移动端工作看板alias集合
     * @return
     */
    List<String> getDingTalkRightAlias();

    /**
     * 批量删除
     * @param list 公司集合
     * @author xingxing.xiao
     */
    Integer deleteFocusBatchByCorpids4Script(List<String> list);
}
